/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package interpretadorportugolvisual.relatorios;

import br.org.isvi.interpretador.portugol.access.ErroDAO;
import br.org.isvi.interpretador.portugol.access.IPVBusinessFacade;
import br.org.isvi.interpretador.portugol.access.Session;
import br.org.isvi.interpretador.portugol.access.SolucaoAlunoDAO;
import br.org.isvi.interpretador.portugol.model.Erro;
import br.org.isvi.interpretador.portugol.model.SolucaoAluno;
import interpretadorportugolvisual.SessaoAluno;
import java.io.File;

/**
 *
 * @author abraaoisvioliveirasouzadocarmo
 */
public class Registrador {

    public static boolean houveErro = false;

    public static void inserirErro(String mensagem) {
        if (Session.getInstance().isLogged() && SessaoAluno.getInstance().aulaSelecionada != null && SessaoAluno.getInstance().exercicioSelecionado != null) {
            houveErro = true;

            SolucaoAluno sol = null;

            sol = IPVBusinessFacade.obterPorAlunoExercicioAula(Session.getInstance().getAluno(), SessaoAluno.getInstance().exercicioSelecionado, SessaoAluno.getInstance().aulaSelecionada);

            sol.setErrors(sol.getErrors() == null ? 1 : sol.getErrors() + 1);

            Erro erro = new ErroDAO().novo();
            erro.setMensagem(mensagem);
            erro.setToSolucaoAluno(sol);

            IPVBusinessFacade.persistir();

        }
    }

    public static void atualizarSolucaoAluno(String texto, boolean depuracao) {
        if (Session.getInstance().isLogged() && SessaoAluno.getInstance().aulaSelecionada != null && SessaoAluno.getInstance().exercicioSelecionado != null) {
            houveErro = false;
            SolucaoAluno sol = null;

            sol = IPVBusinessFacade.obterPorAlunoExercicioAula(Session.getInstance().getAluno(), SessaoAluno.getInstance().exercicioSelecionado, SessaoAluno.getInstance().aulaSelecionada);

            if (sol == null) {
                sol = new SolucaoAlunoDAO().novo();

                sol.setToAluno(Session.getInstance().getAluno());
                sol.setToAula(SessaoAluno.getInstance().aulaSelecionada);
                sol.setToExercicio(SessaoAluno.getInstance().exercicioSelecionado);
                sol.setSolucao(texto);

                sol.setSaida("");
                if (depuracao) {
                    sol.setDepuracoes(1);
                } else {
                    sol.setCompilacoes(1);
                }

            } else {

                sol.setSolucao(texto);
                sol.setSaida("");

                if (depuracao) {
                    sol.setDepuracoes(sol.getDepuracoes() == null ? 1 : (sol.getDepuracoes().intValue() + 1));
                } else {
                    sol.setCompilacoes(sol.getCompilacoes() == null ? 1 : (sol.getCompilacoes().intValue() + 1));
                }
            }

            IPVBusinessFacade.persistir();
        }

    }

    public static void registrarSaida(String texto) {
        if (Session.getInstance().isLogged() && SessaoAluno.getInstance().aulaSelecionada != null && SessaoAluno.getInstance().exercicioSelecionado != null) {
            SolucaoAluno sol = null;

            sol = IPVBusinessFacade.obterPorAlunoExercicioAula(Session.getInstance().getAluno(), SessaoAluno.getInstance().exercicioSelecionado, SessaoAluno.getInstance().aulaSelecionada);

            sol.setSaida(sol.getSaida() != null ? sol.getSaida() + "\n" + texto : texto);
            IPVBusinessFacade.persistir();
        }
    }

    public static void registrarExecucao() {
        if (Session.getInstance().isLogged() && SessaoAluno.getInstance().aulaSelecionada != null && SessaoAluno.getInstance().exercicioSelecionado != null && !houveErro) {

            SolucaoAluno sol = null;

            sol = IPVBusinessFacade.obterPorAlunoExercicioAula(Session.getInstance().getAluno(), SessaoAluno.getInstance().exercicioSelecionado, SessaoAluno.getInstance().aulaSelecionada);

            sol.setExecucoes(sol.getExecucoes() == null ? 1 : (sol.getExecucoes().intValue() + 1));

            IPVBusinessFacade.persistir();
        }
    }
}
